﻿using SimpleConnection_UDP_WIN.extension_class.utils;
using SimpleConnection_UDP_WIN.interface_class;
using SimpleConnection_UDP_WIN.utils.UDP;


namespace SimpleConnection_UDP_WIN.extension_class.hidden
{
    internal class ShowOrHideClass : PluginAbstractClass, PluginBaseInfoInterface
    {


        //传入命令的关键协议名，如 协议名为 a ， 那么这个类只能接受  a://这种协议
        public const string Protocol = "show";

        //必须保留空构造
        public ShowOrHideClass()
        {
        }
        //必须拥有传入 消息的构造
        public ShowOrHideClass(string message, string ip, int port) : base(message, ip, port)
        {
            this.message = message;
            this.ip = ip;
            this.port = port;

        }

        //插件的 各种信息
        public string Name => "隐藏显示类";
        public string Describe => "用于对本软件进行隐藏和显示";
        public string Version => "1.0.0";
        public string Help => "\nshow://<key>1</key>显示\nshow://<key>0</key>隐藏";

        /// <summary>
        /// 主要执行方法，在此处 可以调用 MessageParsingClass 的方法来帮助解析 message
        /// </summary>
        public void exec()
        {
            //判断是否验证了密码
            if (MessageParsingClass.isAdmin(message))
            {
                if (MessageParsingClass.getKey(message).Equals("1"))
                {
                    Form1.Instance.Show();  // 显示Form1窗体
                    new UdpTool(ip, 8871).SendMessage(GetType().Name, $"界面已经显示");
                }
                else if (MessageParsingClass.getKey(message).Equals("0"))
                {
                    Form1.Instance.Hide();  // 隐藏Form1窗体
                    new UdpTool(ip, 8871).SendMessage(GetType().Name, $"界面已经隐藏");
                }
                else if (MessageParsingClass.getKey(message).Equals("2"))
                {
                    if (Form1.Instance.Visible)
                    {
                        Form1.Instance.Hide();
                        //返回给 它 的信息，默认发送到 8871
                        new UdpTool(ip, 8871).SendMessage(GetType().Name, $"界面已经隐藏");
                    }
                    else
                    {
                        Form1.Instance.Show();
                        //返回给 它 的信息，默认发送到 8871
                        new UdpTool(ip, 8871).SendMessage(GetType().Name, $"界面已经显示");
                    }

                }


            }
        }

    }
}
